package com.suray.wcs.service.enums;

import com.suray.wcs.service.pojo.Rgv;

/**
 * 电量状态
 *
 * @author szn on 2018/12/14
 */
public enum ElectricStatus {
    /**
     * 低电量状态（0-20）不可运行
     */
    LOW_BATTERY(1, "低电量"),
    /**
     * 正常电量状态（20-70）正常运行，空闲充电
     */
    NOR_BATTERY(2, "正常电量"),
    /**
     * 充足电量状态（70-99） 电量充足无需充电
     */
    AMPLE_BATTERY(3, "充足电量"),
    /**
     * 满电状态（100） 电量100% 自动结束充电电量
     */
    FULL_BATTERY(4, "满电"),
    /**
     * 满电状态（100） 电量100% 自动结束充电电量
     */
    ERROR_BATTERY(-1, "错误电量");
    /**
     * 对应数字
     */
    private int electricStatus;
    private String description;

    ElectricStatus(int rgvStatus, String description) {
        this.electricStatus = rgvStatus;
        this.description = description;
    }

    /**
     * 设置小车电量状态
     *
     * @param battery
     * @param rgv
     * @return
     */
    public static ElectricStatus parseStatus(int battery, Rgv rgv) {
        if (0 < battery && battery <= rgv.getRgvDB().getAlarmBatterySize()) {
            //强制充电
            return ElectricStatus.LOW_BATTERY;
        } else if (rgv.getRgvDB().getAlarmBatterySize() < battery && battery <= rgv.getRgvDB().getAutoBatterySize()) {
            //自动充电
            return ElectricStatus.NOR_BATTERY;
        } else if (rgv.getRgvDB().getAutoBatterySize() < battery && battery < rgv.getRgvDB().getMaxBatterySize()) {
            //安全电量
            return ElectricStatus.AMPLE_BATTERY;
        } else if (battery >= rgv.getRgvDB().getMaxBatterySize()) {
            //最大电量
            return ElectricStatus.FULL_BATTERY;
        } else {
            //错误电量
            return ElectricStatus.ERROR_BATTERY;
        }
    }

    public int getElectricStatus() {
        return electricStatus;
    }

    @Override
    public String toString() {
        return description;
    }
}
